var mongoose = require('mongoose');

var Schema = mongoose.Schema;

// 1.连接 MongoDB 数据库
// 指定连接的数据库不需要存在，当你插入第一条数据之后就会自动被创建出来
mongoose.connect('mongodb://localhost:27017/itcast');

// 2.设计文档结构（表结构）
// 字段名称就是表结构中的属性名称
// 值
// 约束的目的是为了保证数据的完整性，不要有脏数据
var userSchema = new Schema({
  username: {
      type: String,
      required: true // 必须有
  },
  password: {
      type: String,
      required:true
  },
  email: {
      type:String
  }
});

// 3.将文档结构发布为模型
//      mongoose.model 方法就是用来将一个架构发布为 model
//      第一个参数：传入一个大写名词单数字符串用来表示你的数据库名称
//          mongoose 会自动将大写名词的字符串生成小写复数的集合名称
//          例如这里的 User 最终会变为 users 集合名称
//      第二个参数：架构 Scheme
//      返回值：模型构造函数
var User = mongoose.model('User', userSchema);

// 4.当我们有了模型构造函数之后，就可以使用这个构造函数对 users 集合中的数据进行（增删改查）了

// *****************
//#region /新增数据
// *****************

// var admin = new User({
//     username: 'zs',
//     password: '123456',
//     email: 'admin@admin.com'
// })

// admin.save(function (err, ret) {
//     if (err) {
//         console.log('保存失败')
//     } else {
//         console.log('保存成功')
//         console.log(ret)
//     }
// })


// *****************
//#region /查询数据
// *****************

// 查询所有
// User.find(function (err, ret) {
//     if (err) {
//         console.log('查询失败')
//     } else {
//         console.log(ret)
//     }
// })



// 用户注册
// 1.判断用户是否存在
//      如果已存在，结束注册
//      如果不存在，注册（保存一条用户信息）
// User.find()
//     .then(function (data) {
//         console.log(data)
//     })

User.findOne({
    username: 'aaa'
    })
    .then(function (user) {
        if (user) {
            // 用户已存在，不能注册
            console.log('用户已存在')
        } else {
            // 用户不存在，可以注册
            return new User({
                username: 'aaa',
                password: '1234',
                email: 'dadaf'
            }).save()
        }
    })
    .then(function (ret) {
    })

// 按条件查询所有
// User.find({
//     username: 'zs'
// }, function (err, ret) {
//     if (err) {
//         console.log('查询失败')
//     } else {
//         console.log(ret)
//     }
// })

// 按条件查询单个
// User.findOne({
//     username: 'zs'
// }, function (err, ret) {
//     if (err) {
//         console.log('查询失败')
//     } else {
//         console.log(ret)
//     }
// })


// *****************
//#region /删除数据
// *****************
// User.remove({
//     username: 'zs'
// }, function (err, ret) {
//     if (err) {
//         console.log('删除失败')
//     } else {
//         console.log('删除成功')
//         console.log(ret)
//     }
// })



// *****************
//#region /更新数据
// *****************

// User.findByIdAndUpdate('5df0a848ce4c7b232cf8362d', {
//     password: '123'
// }, function (err, ret) {
//     if (err) {
//         console.log('更新失败')
//     } else {
//         console.log('更新成功')
//         console.log(ret)
//     }
// })